package com.egao.common.module.company.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.Preach;
import com.egao.common.module.company.entity.vo.PreachExcelVO;
import com.egao.common.module.company.entity.vo.PreachListVO;
import com.egao.common.module.company.entity.vo.PreachListVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 宣讲会接口mapper
 * @author dl
 */
@Repository
public interface PreachMapper extends BaseMapper<Preach> {
    /**
     * 查询宣讲会信息
     * @author
     * @param page 单位分页
     * @return 宣讲会信息列表
     */
    List<PreachListVO> listPage(@Param("page") PageParam<PreachListVO> page);

    /**
     * 查询需要索引数据
     * @param start page
     * @param end limit
     * @return 宣讲会信息列表
     */
    List<Preach> initIndex(@Param("start") Integer start, @Param("end") Integer end);

    /**
     * 统计总数
     * @author
     * @param page 单位分页
     * @return
     */
    Integer countTotal(@Param("page") PageParam<PreachListVO> page);
    /**
     * 统计省份
     * @author
     * @param page 单位分页
     * @return
     */
    List<Map<String, Object>> countProvince(@Param("page") PageParam<PreachListVO> page);
    /**
     * 统计单位性质
     * @author
     * @param page 单位分页
     * @return
     */
    List<Map<String, Object>> countNature(@Param("page") PageParam<PreachListVO> page);
    /**
     * 统计单位行业
     * @author
     * @param page 单位分页
     * @return
     */
    List<Map<String, Object>> countIndustry(@Param("page") PageParam<PreachListVO> page);
    /**
     * 统计单位规模
     * @author
     * @param page 单位分页
     * @return
     */
    List<Map<String, Object>> countScale(@Param("page") PageParam<PreachListVO> page);
    /**
     * 宣讲会编号
     * @author
     * @param id 宣讲会编号
     * @return
     */
    Integer updateField(@Param("id") Integer id);
    /**
     * 根据编号集合查询未过期的信息
     * @author
     * @param map 编号集合
     * @return
     */
    List<Preach> getPreachByIds(@Param("map") Map<String, Object> map);

    /**
     * 查询导出数据源
     * @param page 查询条件参数
     * @return List<PreachExcelVO>
     */
    List<PreachExcelVO> listExcel(@Param("page") Map<String, Object> page);
}
